草庐IT

C++11 auto 和 size_type

全部标签

c++ - 编译器标准支持(c++11、c++14、c++17)

如何找到我的GCC编译器支持哪些标准?我不是说我如何在编译时找出正在使用什么C++标准(检查定义的常量),而是在编译之前,我如何检查可用的标准以使用(即标志-std=c++??)?mang++中不存在该信息。除了手动尝试选项之外,我还可以通过g++--version检查我的GCC版本吗?是否可以在某处找到GCC版本和支持标准的表格? 最佳答案 因此,在尝试清除我的sed上的一些灰尘之后技能,我能够想出这个命令:gcc-v--help2>/dev/null|sed-n'/^*-std=\([^它处理g++-v--help的输出(将它打

C++11: "auto"关键字是否完全检索 cv 限定符?我有矛盾的样本

我有如下程序:structA{inti;};intmain(){constinti=0;autoai=i;ai=2;//OKconstAbuf[2];for(auto&a:buf){a.i=1;//error!}std::cout第一个autoai=i;没有问题,好像auto没有检索c/v限定符,因为ai可以修改的但是for循环编译失败——错误:成员A::i在只读对象中的赋值我知道auto不会检索&功能,我的问题是:auto是否像我的情况一样检索c/v限定符?我的测试程序似乎给出了相互矛盾的提示。 最佳答案 你在这里复制ai,而不是

c++ - C++11 std::string::operator[] 会返回空终止缓冲区吗

我有一个std::string类的对象,我需要将其传递给C函数,该函数通过迭代它并搜索操作char*缓冲区空终止符。所以,我有这样的东西://Cfunctionvoidfoo(char*buf);//C++codestd::stringstr("str");foo(&str[0]);假设我们使用C++11,那么我们可以保证std::string表示具有连续存储的字符。但我想知道是否有任何保证&str[0]将指向以\0结尾的缓冲区?是的,有c_str成员函数,但我说的是operator[]。有人可以引用标准吗? 最佳答案 在实践中,是

c++ - 段错误错误 11 C++

所以我在代码的开头遇到了段错误。我试过在不同的点运行一些测试,错误似乎是在我为数组分配内存时。我刚刚开始学习堆和堆栈内存,所以我不确定我是否在那里做错了什么。任何帮助将不胜感激。#includeusingnamespacestd;//FunctionPrototypesvoidsort(intA[],intn);intfindMin(intA[],intn,intj);intswap(int&a,int&b);doublemedian(intA[],intn);voidoutput1(intmedian);voidoutput2(doublemedian);intmain(){ints

c++ - 枚举 "does not name a type' 的问题

g++(Ubuntu/Linaro4.4.4-14ubuntu5)4.4.5我有一个问题,我似乎找到了我得到这个错误的方法。文件statemachine.h#ifndefSTATEMACHINE_H_INCLUDED#defineSTATEMACHINE_H_INCLUDED#include"port.h"enumstate{ST_UNINITIALIZED=0x01,ST_INITIALIZED=0x02,ST_OPENED=0x03,ST_UNBLOCKED=0x04,ST_DISPOSED=0x05};voidstate_machine(eventevt,port_t*port)

c++ - C++中auto_ptr的指针运算

我正在阅读C++STL中auto_ptr的实现。我看到像->和*这样的指针上通常需要的操作被重载了,因此它们保留了相同的含义。但是,指针运算是否适用于自动指针?假设我有一个自动指针数组,我希望能够执行类似array+1的操作,并希望获得数组第二个元素的地址。我如何获得它?我对这个要求没有任何实际应用,只是出于好奇。 最佳答案 auto_ptr只能指向单个元素,因为它使用delete(而不是delete[])来删除它的指针。所以这里没有用到指针运算。如果您需要一个对象数组,通常的建议是改用std::vector。

C++ 标准 : default "const T& value" in vector constructor for type 'int'

explicitvector(size_typen,constT&value=T(),constAllocator&=Allocator());vectorvec(10);cout::const_iteratoriter=vec.begin();iter!=vec.end();++iter){coutVS2010的输出:vec.size:100000000000问题>:根据最新的C++标准,当我们使用vectorObject(size_type)定义一个vector对象时,默认的int值是多少?在这里你可以看到,VS2010输出0作为默认的int值。但我不知道这是否是C++标准所要求的

c++ - std::queue<T, list<T>>::size() 在 O(n) 中很慢?

我在使用队列的代码中遇到了意外的性能行为。我意识到当队列中有更多元素时性能会下降。事实证明,使用size()方法是原因。这是一些显示问题的代码:#include#include#include#include"Stopwatch.h"usingnamespacestd;structBigStruct{intx[100];};intmain(){CStopwatchqueueTestSw;typedefBigStructQueueElementType;typedefstd::queue>QueueType;//typedefstd::queueQueueType;//nosurpris

RabbitMQ(十二)Cannot deserialize value of type `java.lang.String` from Object value 报错整理

目录1.核心报错内容:2.完整报错内容:3.报错原因:4.解决方案:消息接收类型错误1.核心报错内容:Cannotdeserializevalueoftypejava.lang.StringfromObjectvalue(tokenJsonToken.START_OBJECT)2.完整报错内容:org.springframework.amqp.rabbit.listener.exception.FatalListenerExecutionException:Illegalnullidinmessage.Failedtomanageretryformessage:(Body:'[B@7f8bf9

c++ - 在 C++11 基于范围的 'for' 循环中获取对 STL 容器元素的引用

for(Somethingsomething:setOfSomething)//OKfor(Somethingconst&something:setOfSomething)//OKfor(Something&something:setOfSomething)//ERRORerror:invalidinitializationofreferenceoftype'Something&'fromexpressionoftype'constSomething'迭代器从什么时候开始返回constSomething?它应该返回Something&或Somethingconst&。由于基于范围的“f